package org.xxx.epms.result.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.xxx.epms.result.dto.*;
import org.xxx.epms.result.models.AqiMeasuredResult;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author lb
 * @since 2024-06-08
 */
public interface AqiMeasuredResultService extends IService<AqiMeasuredResult> {
    /**
     * 新增空气质量确认信息，即反馈信息被指派
     * @param aqiMeasuredResult
     * @return
     */
    int createAqiMeasuredResult(AqiMeasuredResult aqiMeasuredResult);

    /**
     * 更新空气质量确认信息，即网格员进行检测
     * @param aqiMeasuredResult
     * @return
     */
    int updateAqiMeasuredResult(AqiMeasuredResult aqiMeasuredResult);

    /**
     * 获取分页数据总页数
     * @param aqiMeasuredResultParam 查询条件
     * @param pageSize 每页显示条数
     * @return 总页数
     */
    int getTotalPage(AqiMeasuredResultParam aqiMeasuredResultParam, int pageSize);

    /**
     * 分页获取反馈信息
     * @param aqiMeasuredResultParam 查询条件
     * @param pageSize 每页显示条数
     * @param pageNum 页码
     * @return 反馈信息列表
     */
    Page<AqiMeasuredResult> getPageList(AqiMeasuredResultParam aqiMeasuredResultParam, int pageSize, int pageNum);

    /**
     * 根据确认信息id计算空气质量aqi值
     * @param aqimrId
     * @return
     */
    Integer getAqiByAqimrId(Integer aqimrId);

    /**
     * 获取所有省份的AQI超标结果
     * @return
     */
    public List<ProvinceGroupingDTO> listProvinceGrouping();

    /**
     * 展示空气质量趋势
     * @return
     */
    public List<AqiTrendDTO> getAqiTrend();

    /**
     * 展示空气质量分布
     * @return
     */
    public List<AqiDistributionDTO> getAqiDistribution();

    /**
     * 获取空气质量检测结果总数
     * @return
     */
    public Integer getAqiMeasuredResultCount();

    /**
     * 获取空气质量检测结果良好数
     * @return
     */
    public Integer getAqiMeasuredResultGoodCount();

    /**
     * 计算省份空气质量覆盖率
     * @return
     */
    public String getAqiMeasuredResultProvinceCov();

    /**
     * 计算城市空气质量覆盖率
     * @return
     */
    public String getAqiMeasuredResultCityCov();

    /**
     * 根据反馈信息id获取检测结果详情
     * @param fbId
     * @return
     */
    AqiMeasuredResultDetailDTO getMeasuredResultByFbId(Integer fbId);

    /**
     * 根据网格员id获取确认信息列表
     * @param insId
     * @return
     */
    List<AqiMeasuredResultDetailDTO> getMeasuredResultByInsId(Integer insId);
}
